package com.hrbxlh.dao;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.springframework.stereotype.Repository;

/**
* -------------------------------------------------------
* Copyright (c) 2017, 鑫联华信息科技股份有限公司
* All rights reserved.
* FileName：MemberDao.java
* Description：人员MemberDao类,负责操作人员数据。
* History：
* Date           Author               Desc
* 2017.1.6		  sy                   建立
* -------------------------------------------------------
*/

@Repository
public interface MemberDao {

	/**
	 * @description 添加人员的方法，参数key与数据库column对应即可。 
	 * @param Map<String,Object> paramMap
	 * @return 
	 * @throws Exception
	 */
	public boolean addMember(Map<String, Object> paramMap) throws Exception;
	
	/**
	 * @description 查询人员的方法
	 * @param Map<String,Object> paramMap 参数值与数据库column值一致
	 * @return List<Map<String, Object>> 人员列表（如果查询一个人，就在参数中给人员id）
	 * @throws Exception
	 */
	public List<Map<String, Object>> getMember(Map<String,Object> paramMap) throws Exception;
	
	/**
	 * @description 班级下的学生
	 * @param Map<String,Object> paramMap 参数值与数据库column值一致
	 * @return List<Map<String, Object>> 人员列表（如果查询一个人，就在参数中给人员id）
	 * @throws Exception
	 */
	public List<Map<String, Object>> getMemberByClassId(Map<String,Object> paramMap) throws Exception;
	
	/**
	 * @description 修改人员的方法，参数key与数据库column对应即可。 
	 * @param Map<String,Object> paramMap 人员信息，列值，
	 * @return boolean (true 成功 ,false失败)
	 * @throws Exception
	 */
	public boolean saveMember(Map<String,Object> paramMap) throws Exception;
	
	/**
	 * @description 通过班级号删除人员
	 * @param List<Integer> 班级id的集合
	 * @return 
	 * @throws Exception
	 */
	public boolean delMemberByClassId(List<String> paramList) throws Exception;
	
	/**
	 * @description 删除人员的方法，传的是每个人员的id
	 * @param List<Integer> 人员id的集合
	 * @return 
	 * @throws Exception
	 */
	public boolean delMember(List<String> paramList) throws Exception;
	
	/**
	 * @description 获取这个学号/工号的全部人员
	 * @param String loginName登录名
	 * @return List<Map<String, Object>> 人员集合
	 * @throws Exception
	 */
	public List<Map<String, Object>> getMemberByStuorteaId(String stuorteaId) throws Exception;
	
	/**
	 * @description 通过登录名获取人员信息（管理人员中用到的有部门关联）
	 * @param String loginName登录名
	 * @return List<Map<String, Object>> 人员集合
	 * @throws Exception
	 */
	public List<Map<String, Object>> getAdminByStuorteaId(String stuorteaId) throws Exception;
	
	/**
	 * @description 修改密码，通过登录名
	 * @param Map<String, Object> 登录名  密码
	 * @return 
	 * @throws Exception
	 */
	public void savePassword(Map<String, Object> paramMap) throws Exception;
	
	/**
	 * @description 跳转到主页需要的，获取全校标签平均值（上半部分）
	 * @param Map<String, Object> 
	 * @return   readAvgValues阅读能力平均值,gardeAvgValues成绩平均值,consumeAvgValues消费平均值,onlineAvgValues上网平均值,creditAvgValues信用平均值,compreAvgValues综合能力值,substring(dataDate, 1, 7) as dataDate年月
	 * @throws Exception
	 */
	public Map<String, Object> getStuAvgValue(Map<String, Object> paramMap) throws Exception;

	/**
	 * @description  通过学号查询当前学生的所学的课程（到时候粘到刑的课程表中）
	 * @param Map<String, Object> 
	 * @return  List<Map<String, Object>>学生/教师所有的课程
	 * @throws Exception
	 */
	public List<Map<String, Object>> getCoruseByStuorteaId(Map<String, Object> paramMap) throws Exception;
	
	/**
	 * @description 通过班级号查询每个班级的人数
	 * @param Map<String,Object> paramMap 参数值与数据库column值一致
	 * @return List<Map<String, Object>> 人员列表（如果查询一个人，就在参数中给人员id）
	 * @throws Exception
	 */
	public List<Map<String, Object>> getStuCountByClassId(String classId) throws Exception;
	
	/**
	 * @description 增加教师的简介和照片
	 * @param Map<String, Object> 简介，照片，教师Id
	 * @return Map<String, Object> 
	 * @throws Exception
	 */
	public boolean updatImOrContent(Map<String,Object> paramMap) throws Exception;
	
	/**
	 * @description 教师/学生信息页修改（包含上传图片和修改简介）
	 * @param Map<String, Object> 简介，照片，教师Id
	 * @return Map<String, Object> 
	 * @throws Exception
	 */
	public boolean updateInfo(Map<String,Object> paramMap) throws Exception;
	
	/**
	 * @description 通过班级id查人员id的集合
	 * @param Map<String,Object> paramMap 参数值与数据库column值一致
	 * @return List<Map<String, Object>> 人员列表（如果查询一个人，就在参数中给人员id）
	 * @throws Exception
	 */
	public List<String> getUseIdList(List<String> paramList) throws Exception;
	
	/**
	 * @description 重置密码
	 * @param Map<String,Object> paramMap
	 * @return boolean
	 * @throws Exception
	 */
	public boolean resetPwd(Map<String, Object> paramMap) throws Exception;
	
	/**
	 * @description 查询全部教师
	 * @param 
	 * @return Map<String, Object> 
	 * @throws Exception
	 */
	public List<Map<String, Object>> getTeachers() throws Exception;
	
	/**
	 * @description 用户详情
	 * @param 
	 * @return Map<String, Object> 
	 * @throws Exception
	 */
	public List<Map<String, Object>> getMemberDetailById(Map<String, Object> paramMap) throws Exception;
	
	/**
	 * @description xzx修改某个班级下的所有学生的院系id专业id
	 * @param classId professionId departmentId
	 * @return Map<String, Object> 
	 * @throws Exception
	 */
	public void saveStuProAndDepartId(Map<String, Object> paramMap) throws Exception;
	
	
}